정보처리기사 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 책을 참고해서 공부하세요
2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요.
1. 절차적 프로그래밍 언어
- 일련의 처리 절차를 정해진 문법에 따라 순서대로 기술해 나가는 언어
- 절차적 프로그래밍 언어의 종류
| 언어 |
특징 |
| C |
1972년 미국 벨 연구소의 데니스 리치에 의해 개발. 시스템 프로그래밍 언어로 사용. 포인터, 고급 프로그래밍 언어이면서 저급 프로그램 언어의 특징을 모두 갖춘 컴파일러 방식의 언어 |
| ALGOL |
수치 계산이나 논리 연산을 위한 과학 기술 계산용 언어 |
| COBOL |
사무 처리용 언어. 영어 문장 형식으로 구성되어 있어 이해와 사용이 쉬움, 4개의 DIVISION으로 구성 |
| FORTRAN |
과학 기술 계산용 언어. 수학과 공학 분야의 공식이나 수식과 같은 형태로 프로그래밍 가능 |
2. 스크립트 언어
- HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로, 기계어로 컴파일 되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
- 스크립트 언어의 분류
서버용 스크립트 언어 : 서버에서 해석되어 실행된 후 결과만 클라이언트로 보내는 스크립트 언어( ASP, JSP, PHP, 파이썬, 펄, 루비)
클라이언트용 스크립트 언어 : 클라이언트의 웹 브라우저에서 해석되어 실행되는 스크립트 언어(자바 스크립트, VB 스크립트)
| 자바 스크립트 |
웹 페이지의 동작을 제어하며, 변수 선언이 필요 없음 |
| ASP |
서버 측에서 동적으로 수행되는 페이지를 만들기 위한 언어. 마이크로 소프트 사에서 제작하였으며, Windows 계열에서만 수행 가능한 프로그래밍 언어 |
| JSP |
Java로 만들어진 서버용 스크립트 언어. 다양한 운영체제에서 사용이 가능 |
| PHP |
서버용 스크립트 언어, Linux, Unix, Windows 운영체제에서 사용이 가능. C, Java 등과 문법이 유사하여 배우기 쉽고 웹 페이지 제작에 많이 사용 |
| 파이썬 |
객체지향 기능을 지원하는 대화형 인터프리터 언어 |
3. 선언형 언어
- 프로그램이 수행해야 할 문제를 기술하는 언어로, 목표를 명시하고 알고리즘은 명시 X
- 선언형 언어의 분류
함수형 언어 : 수학적 함수를 조합하여 문제를 해결하는 언어로, 알려진 값을 함수에 적용하는 것을 기반(LISP)
논리형 언어 : 기호 논리학에 기반을 둔 언어로, 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행(PROLOG)
| HTML |
인터넷의 표준 문서인 하이퍼텍스트 문서를 만들기 위해 사용하는 언어 |
| LISP |
인공지능 분야에 사용되는 언어로, 기본 자료 구조가 연결 리스트 구조이며 재귀호출을 많이 사용 |
| PROLOG |
논리학을 기초로 한 고급 언어로, 인공 지능 분야에서의 논리적인 추론이나 리스트 처리 등에 주로 사용 |
| XML |
기존 HTML의 단점을 보완하여 웹에서 구조화된 폭넓고 다양한 문서들을 상호 교환할 수 있도록 설계된 언어. 사용자가 HTML에 새로운 태그를 정의 가능 |
| Haskell |
함수형 프로그래밍 언어로, 부작용이 없고 코드가 간결하여 에러 발생 가능성이 낮음 |
4. 객체지향 프로그래밍 언어
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법
| 언어 |
특징 |
| Java |
분산 네트워크 환경에 적용이 가능하며, 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있음, 운영체제 및 하드웨어에 독립적이며, 이식성, 캡슐화, 재사용성 |
| C++ |
C언어에 객체지향 개념을 적용한 언어. 모든 문제를 객체로 모델링하여 표현 |
| Smalltalk |
1세대 객체지향 프로그래밍 언어 중 하나로 순수한 객체지향 프로그래밍 언어. 최초로 GUI를 제공 |
5. 객체지향 프로그래밍 언어의 구성 요소
객체(Object) : 데이터(속성)와 이를 처리하기 위한 연산(메소드)을 결합시킨 실체. 데이터 구조와 그 위에서 수행되는 연산들을 가지고 있는 소프트웨어 모듈
- 속성(Attribute) : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현
- 메소드(Method) : 객체가 메시지를 받아 실행해야 할 때 구체적인 연산을 정의하는 것, 객체의 상태를 참조하거나 변경하는 수단
클래스(Class) : 두 개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소 (공통된 특성과 행위를 갖는 객체의 집합, 객체의 유형 또는 타입을 의미, 데이터를 추상화하는 단위)
메시지(Message) : 객체들 간에 상호작용을 하는데 사용되는 수단. 객체의 메소드(동작, 연산)를 일으키는 외부의 요구 사항, 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환
6. 객체지향 프로그래밍 언어의 특징
캡슐화(Encapsulation) :데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것. 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급 효과 적음, 재사용이 용이
정보 은닉(Information Hiding): 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
추상화(Abstraction) : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것. 모델화, 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념
상속성(Inheritance) : 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것. 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의 하지 않고서도 즉시 사용할 수 있음
다형성(Polymorphism) : 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력. 객체(클래스)들은 동일한 메소드명을 사용하며 같은 의미의 응답을 함
7. 예외 처리
- 예외(Exception) : 프로그램의 정상적인 실행을 방해하는 조건이나 상태
- 예외 처리(Exception Handling) : 예외가 발생했을 때 프로그래머가 해당 문제에 대비해 작성해 놓은 처리 루틴을 수행하도록 하는 것
- 예외의 원인 : 하드웨어 문제, 운영체제의 설정 실수, 라이브러리 손상, 사용자의 입력 실수, 받아들일 수 없는 연산, 할당하지 못하는 기억장치 접근 등
- java의 예외 객체
| 예외 객체 |
발생 원인 |
| ClassNotFoundException |
클래스를 찾지 못한 경우 |
| NoSuchMethodException |
메소드를 찾지 못한 경우 |
| FileNotFoundException |
파일을 찾지 못한 경우 |
| InterruptedIOException |
입·출력 처리가 중단된 경우 |
| ArithmeticException |
0으로 나누는 등의 산술 연산에 대한 예외가 발생한 경우 |
| IllegalArgumentException |
잘못된 인자를 전달한 경우 |
| NumberFormatException |
숫자 형식으로 변환할 수 없는 문자열을 숫자 형식으로 변환한 경우 |
| ArrayIndexOutOfBoundsException |
배열의 범위를 벗어난 접근을 시도한 경우 |
| NegativeArraySizeException |
0보다 작은 값으로 배열의 크기를 지정한 경우 |
| NullPointerException |
존재하지 않는 객체를 참조한 경우 |